#include <stdio.h>
void foo(int n)
{
    printf("n = %d\n", n);
}
void main()
{
    foo(1);
    // 这里p是一个函数指针，它指向一个接受一个int参数并返回void的函数。
    void (*p)(int) = foo; // 使用&操作符将foo函数的地址赋值给函数指针p
    (*p)(2);              // 通过函数指针调用函数，传递参数2

    // C 语言还规定，函数名本身就是指向函数代码的指针，通过函数名就能获取函数地址。也就是说，foo和&foot是一回事。
    // void (*p)(int) = foo;
    // void (*p)(int) = &foo;
}
